import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
import textwrap
# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']

# 加载数据
data = pd.read_excel('算法成都.xlsx')
data = data.drop('Unnamed: 0', axis=1)

# 按照工资高低进行重新排序
salary_top10_1 = data.sort_values(by='salary', ascending=False)
print(salary_top10_1.head(10))
# 删除有重复名称的公司，并取前10个
salary_top10_1 = salary_top10_1.drop_duplicates('company_name')
salary_top10_1 = salary_top10_1.drop_duplicates('salary').head(10)

print(salary_top10_1.head(10))
# 对结果重置索引
salary_top10_2 = salary_top10_1[['company_name','salary']].reset_index(drop=True)

# 显示数据（调整x轴字符宽度并换行显示公司名称）
max_width = 5
salary_top10_2['company_name'] = salary_top10_2['company_name'].apply(lambda x: '\n'.join(textwrap.fill(x, max_width).split()))
colors = ['b', 'g', 'r', 'c','m', 'y', 'orange', 'purple', 'brown']
salary_top10_2.plot(kind='bar', x='company_name', y='salary', width=0.5, color=colors)

# 柱状图上显示数字
salary_top10_3 = salary_top10_2['salary'].tolist()
for x, y in enumerate(salary_top10_3):
    plt.text(x, y, y, ha='center', fontsize=12)

# 图标的显示配置和保存
plt.ylim(15000, 30000)
plt.title("成都地区算法岗位工资排名Top10的公司")
plt.xlabel("公司名称", fontsize=16)
plt.ylabel("工资", fontsize=16)
plt.xticks(fontsize=10)
plt.xticks(fontsize=6, rotation=90)
plt.tight_layout()
plt.savefig('./picture/5 - 1.成都地区算法岗位工资排名Top10的公司.png')
plt.show()